/*
 * function TreeNode(x) {
 *   this.val = x;
 *   this.left = null;
 *   this.right = null;
 * }
 */
/**
 * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
 *
 * 
 * @param proot TreeNode类 
 * @param k int整型 
 * @return int整型
 */
 function KthNode( proot ,  k ) {
  // write code here
  var count = 0 // 用来记录当前是第几个数字
  function findNode(root){ // 定义查找数字的函数
    if(root === null) return  // 如果当前的节点是空节点 那就什么也不敢 直接返回
    var left = findNode(root.left) // 如果不是空节点  就查找左节点
    if(left) return left // 如果左节点右返回值 就返回左节点的返回值
    count++ // 如果左节点没有返回值 就让计数器++
    if(count === k){
      return root.val // 如果计数器是要找的数字书序 就返回这个数字
    }
    // 如果还不是返回值 就遍历右节点
    var right = findNode(root.right)
    if(right) return right
  }
  // return findNode(proot) ? findNode(proot) : -1 // 如果根节点返回值是有值的话 就说明找到了 就返回这个值 如果没有值的话就返回-1 这种写法是返回值有值 就再计算一次
  var res = findNode(proot)
  return res ? res : -1
}
module.exports = {
  KthNode : KthNode
};